/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sopra09.lv6659438.controller.eintragAuswaehlen;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
 * Nimmt die vom Nutzer eingegebenen Suchkriterien auf.
 * @author TJ
 */
public class SuchkriterienEingebenAF extends org.apache.struts.action.ActionForm {
    private String typ;
    private String titel;
    private String autor;
    private String jahr;
    private String method;

    /**
     *
     */
    public SuchkriterienEingebenAF() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @return the typ
     */
    public String getTyp() {
        return typ;
    }

    /**
     * @param typ the typ to set
     */
    public void setTyp(String typ) {
        this.typ = typ;
    }

    /**
     * @return the titel
     */
    public String getTitel() {
        return titel;
    }

    /**
     * @param titel the titel to set
     */
    public void setTitel(String titel) {
        this.titel = titel;
    }

    /**
     * @return the autor
     */
    public String getAutor() {
        return autor;
    }

    /**
     * @param autor the autor to set
     */
    public void setAutor(String autor) {
        this.autor = autor;
    }

    /**
     * @return the jahr
     */
    public String getJahr() {
        return jahr;
    }

    /**
     * @param jahr the jahr to set
     */
    public void setJahr(String jahr) {
        this.jahr = jahr;
    }

    
    /**
     * @return the method
     */
    public String getMethod() {
        return method;
    }

    /**
     * @param method the method to set
     */
    public void setMethod(String method) {
        this.method = method;
    }

    // setzt die suchkriterien zurück
    @Override
    public void reset(ActionMapping mapping, HttpServletRequest request) {
        System.out.println("SuchkriterienEingebenAF: zurücksetzen aller 4 Attribute auf null");
        this.setTyp(null);
        this.setTitel(null);
        this.setAutor(null);
        this.setJahr(null);

         System.out.println("Suchkriterien nach reset(...) sind: \n " +
                "typ: " + typ + " \n" +
                "titel: " + titel + " \n" +
                "jahr: " + jahr + " \n" +
                "autor: " + autor
                );
    }

    // validiert die vom nutzer eingegebenen suchkriterien
    @Override
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        System.out.println("SuchkriterienEingebenAF: Validierung der eingegebenen Suchkriterien startet.");
        System.out.println("Eingegebene Suchkriterien sind: \n " +
                "typ: " + typ + " \n" +
                "titel: " + titel + " \n" +
                "jahr: " + jahr + " \n" +
                "autor: " + autor
                );
        ActionErrors fehler = new ActionErrors();

        // validierung für typ 'zeitschrift'
         if (typ.equalsIgnoreCase("zeitschrift")){
             System.out.println("typ: " + typ + "\n" );

             // kein titel oder titel.length() nicht zwischen 1 und 60
             if ((titel == null) || (titel.length() < 1) || (titel.length() > 60)) {

                 System.out.println("Validierung 1:  \n" );
                 System.out.println(
                        "titel: " + titel + "\n" +
                        "(titel == null): " + (titel == null) + "\n" +
                        "(titel.length() < 1): " + (titel.length() < 1) + "\n" +
                        "(titel.length() > 60): " + (titel.length() > 60) + "\n" +
                        "(titel == null) || (titel.length() < 1) || (titel.length() > 60)): " +
                        ((titel == null) || (titel.length() < 1) || (titel.length() > 60)) + "\n"
                        );

                fehler.add("zeitschrift1", new ActionMessage("fehlermeldung.validateSuchkriterien.zeitschrift1"));}

             // zeitschriften haben kein jahr attribut
             if ((jahr != null) && (jahr.length() > 0)) {

                System.out.println("Validierung 2:  \n" );
                System.out.println(
                        "jahr: " + jahr + "\n" +
                        "(jahr != null): " + (jahr != null) + "\n" +
                        "(jahr.length() > 0): " + (jahr.length() > 0) + "\n" +
                        "((jahr != null) && (jahr.length() > 0)): " +
                        ((jahr != null) && (jahr.length() > 0)) + "\n"
                        );

                fehler.add("zeitschrift2", new ActionMessage("fehlermeldung.validateSuchkriterien.zeitschrift2"));}

            //  zeitschriften haben kein autor attribut
            if ((autor != null) && (autor.length() > 0)) {

                  System.out.println("Validierung 3:  \n" );
                  System.out.println(
                        "autor: " + autor + "\n" +
                        "(autor != null): " + (autor != null) + "\n" +
                        "(autor.length() > 0): " + (autor.length() > 0) + "\n" +
                        "((autor != null) && (autor.length() > 0)): " +
                        ((autor != null) && (autor.length() > 0)) + "\n"
                        );

                fehler.add("zeitschrift3", new ActionMessage("fehlermeldung.validateSuchkriterien.zeitschrift3"));}
         }

        // validierung wenn typ nicht 'zeitschrift' ist
         else {
            System.out.println("typ: " + typ + "\n" );

            // leere anfrage
            if (((titel == null)||(titel.length() == 0)) && ((autor == null) || (autor.length() == 0))
                 && ((jahr == null)||(jahr.length() == 0))) {

                System.out.println("Validierung 1:  \n" );
                System.out.println("(((titel == null)||(titel.length() == 0)) && ((autor == null) || (autor.length() == 0))" +
                 "&& ((jahr == null)||(jahr.length() == 0))):  " +
                        (((titel == null)||(titel.length() == 0)) && ((autor == null) || (autor.length() == 0))
                 && ((jahr == null)||(jahr.length() == 0))) + "\n");

                 fehler.add("leereAnfrage", new ActionMessage("fehlermeldung.validateSuchkriterien.leereAnfrage"));}

            // titel zu lang (> 60 buchstaben)
            if ((titel != null) && (titel.length() > 60)) {

                System.out.println("Validierung 2:  \n" );
                System.out.println("((titel != null) && (titel.length() > 60)):  " +
                        ((titel != null) && (titel.length() > 60)) + "\n");

                 fehler.add("titel", new ActionMessage("fehlermeldung.validateSuchkriterien.titel"));}

            // jahr zu lang (> 4 buchstaben)
            if ((jahr != null) && (jahr.length() > 4)) {

                 System.out.println("Validierung 3:  \n" );
                 System.out.println("((jahr != null) && jahr.length() > 4) :  " +
                      ((jahr != null) && (jahr.length() > 4))  + "\n");

                 fehler.add("jahr", new ActionMessage("fehlermeldung.validateSuchkriterien.jahr"));}

            // autor zu lang (> 60 buchstaben)
            if ((autor != null) && (autor.length() > 60))  {
            
                System.out.println("Validierung 4:  \n" );                  
                System.out.println("((autor != null) && (autor.length() > 60)) > 60):  " +
                        ((autor != null) && (autor.length() > 60)) + "\n");

                fehler.add("autor", new ActionMessage("fehlermeldung.validateSuchkriterien.autor"));}
         }
        //Return the errors
        return fehler;
        }

  

   
}
